<!doctype html>
<html>
<head>
<script src="../../resources/js-test.js"></script>
</head>
<body id="body" class="body">
  <div class="parentSibling"></div>
  <div class="parent">
    <div id="sibling" class="sibling"></div>
    <div id="rootNode" class="rootNode">
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
    </div>
  </div>
</body>
<script>
description('Test for crbug.com/304069: querySelectorAll regression.');

var rootNode = document.getElementById('rootNode');
shouldBe("rootNode.querySelectorAll('#body div').length", "6");
shouldBe("rootNode.querySelectorAll('#body').length", "0");
shouldBe("rootNode.querySelectorAll('div + #rootNode div').length", "6");

shouldBe("rootNode.querySelectorAll('.sibling + .rootNode div').length", "6");
shouldBe("rootNode.querySelectorAll('.sibling ~ .rootNode div').length", "6");
shouldBe("rootNode.querySelectorAll('.sibling .rootNode div').length", "0");
shouldBe("rootNode.querySelectorAll('.sibling div').length", "0");
shouldBe("rootNode.querySelectorAll('.body .rootNode div').length", "6");
shouldBe("rootNode.querySelectorAll('.body .sibling + .rootNode div').length", "6");
shouldBe("rootNode.querySelectorAll('.body .parentSibling + .parent div').length", "6");
shouldBe("rootNode.querySelectorAll('.body .parentSibling ~ .parent div').length", "6");
shouldBe("rootNode.querySelectorAll('.body div').length", "6");
shouldBe("rootNode.querySelectorAll('.body').length", "0");

shouldBe("rootNode.querySelectorAll('body div').length", "6");
shouldBe("rootNode.querySelectorAll('body').length", "0");

shouldBeNull("rootNode.querySelector('#body')");
shouldBeNull("rootNode.querySelector('.body')");
shouldBeNull("rootNode.querySelector('body')");
</script>
</html>
